home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / fonttest.lha / SOURCE / FontTest.S
Text File  |  1980-12-27  |  5KB  |  220 lines

  1.     section TestFont,code_c
  2. OpenLibrary    equ    -552            ; _LVO values
  3. CloseLibrary    equ    -414
  4. AllocRaster    equ    -492
  5. FreeRaster    equ    -498
  6.  
  7. CUSTOM        equ    $dff000
  8. VHPOSR        equ    $006            ; Hardware stuff
  9. BPL1PTH        equ    $0E0
  10. BPL1PTL        equ    $0E2
  11. BPL2PTH        equ    $0E4
  12. BPL2PTL        equ    $0E6
  13. BPL3PTH        equ    $0E8
  14. BPL3PTL        equ    $0EA
  15. BPL1MOD        equ    $108
  16. BPL2MOD        equ    $10A
  17. BPLCON0        equ    $100
  18. BPLCON1        equ    $102
  19. BLTAPTH        equ    $050
  20. BLTDPTH        equ    $054
  21. BLTAFWM        equ    $044
  22. BLTALWM        equ    $046
  23. BLTCON0        equ    $040
  24. BLTCON1        equ    $042
  25. BLTAMOD        equ    $064
  26. BLTDMOD        equ    $066
  27. BLTSIZE        equ    $058
  28. COLOR00        equ    $180
  29. COLOR01        equ    $182
  30. COLOR02        equ    $184
  31. COLOR03        equ    $186
  32. COLOR04        equ    $188
  33. COLOR05        equ    $18A
  34. COLOR06        equ    $18C
  35. COLOR07        equ    $18E
  36. DIWSTRT        equ    $08E
  37. DIWSTOP        equ    $090
  38. DDFSTRT        equ    $092
  39. DDFSTOP        equ    $094
  40. DMACON        equ    $096
  41. DMACONR        equ    $002
  42. PLANESIZE    equ    44*200
  43.     
  44.     move.l    $4.w,a6                Open graphics library
  45.     move.l    #GfxName,a1
  46.     moveq    #0,d0
  47.     jsr    OpenLibrary(a6)
  48.     tst.l    d0
  49.     beq    Error
  50.     move.l    d0,GfxBase            (save base pointer)
  51.     move.l    GfxBase,a6            Now grab some screen
  52.     move.l    #352,d0                memory for 3 planes
  53.     move.l    #(200*3),d1                
  54.     jsr    AllocRaster(a6)
  55.     move.l    d0,ScreenMem
  56.     beq    Error
  57.     move.l    #BPL1,a0            Put bitplane addresses in
  58.     moveq    #2,d1                copper list
  59. CprLoop    move.w    d0,6(a0)
  60.     swap    d0
  61.     move.w    d0,2(a0)
  62.     swap    d0
  63.     addi.l    #PLANESIZE,d0
  64.     lea    8(a0),a0
  65.     dbf    d1,CprLoop
  66.     move.l    ScreenMem,a0            Clear the screen
  67.     moveq    #0,d0
  68.     move.w    #(3*352/8*200/4-1),d0
  69. ClrLoop    clr.l    (a0)+
  70.     dbra    d0,ClrLoop
  71.     move.l    #Font,a0            Add some colour
  72.     move.w    (a0)+,c00
  73.     move.w    (a0)+,c01
  74.     move.w    (a0)+,c02
  75.     move.w    (a0)+,c03
  76.     move.w    (a0)+,c04
  77.     move.w    (a0)+,c05
  78.     move.w    (a0)+,c06
  79.     move.w    (a0)+,c07
  80.     move.l    GfxBase,a0
  81.     move.l    $32(a0),CopperSave        Save old copper list...
  82.     move.l    #CopperList,$32(a0)        ...and put in ours
  83. Loop:
  84.     cmp.b    #$FF,VHPOSR+CUSTOM        Wait for vertical blank
  85.     bne.s    Loop
  86.     bsr    Scrolly
  87.     andi.b    #$40,$bfe001            Test left mouse button
  88.     bne    Loop                - if down, exit...
  89.     move.l    GfxBase,a6            Restore the old screen
  90.     move.l    CopperSave,$32(a6)
  91.     move.l    GfxBase,a6            Give back screen memory
  92.     move.l    ScreenMem,a0
  93.     move.l    #352,d0
  94.     move.l    #3*200,d1
  95.     jsr    FreeRaster(a6)
  96.     move.l    $4.w,a6
  97.     move.l    GfxBase,a1
  98.     jsr    CloseLibrary(a6)        Close gfx library
  99.     moveq    #0,d0
  100. Error:                        ;Bye bye!
  101.     rts
  102.     
  103. Scrolly:                    ;The scrolling message
  104.     addi.w    #1,Count            A new letter every 10 frames
  105.     cmpi.w    #10,Count            Draw one ?
  106.     bne    DoScroll            No - Just do scroll
  107.     clr.w    Count
  108.     move.l    Letter,a0
  109.     tst.b    (a0)                End of message ?
  110.     bne.s    CharOK                Skip if not
  111.     move.l    #Message,a0            Reset pointer
  112. CharOK:
  113.     moveq    #0,d0            
  114.     move.b    (a0)+,d0            Get next letter
  115.     move.l    a0,Letter            Save pointer
  116.     sub.b    #" ",d0                Get letter in font range
  117.     mulu    #32*2*2*3,d0            1 char=3*128 bytes
  118.     move.l    #Font,a0 
  119.     add.l    d0,a0                Get offset in font table
  120.     add.l    #16,a0                Skip past colour info
  121.     bsr    PlotChar
  122. DoScroll:
  123.     bsr    WaitBlit
  124.     move.l     ScreenMem,d0            Plane 1
  125.     bsr.s    Scroll
  126.     bsr    WaitBlit
  127.     move.l    ScreenMem,d0            
  128.     addi.l    #PLANESIZE,d0            Plane 2
  129.     bsr.s    Scroll
  130.     bsr    WaitBlit
  131.     move.l    ScreenMem,d0
  132.     addi.l     #PLANESIZE*2,d0            Plane 3
  133.     bsr.s    Scroll
  134.     rts
  135. Scroll:                        ; Blit scroll
  136.     lea    CUSTOM,a2
  137.     addi.l    #140*44+42,d0    
  138.     move.w    #$49f0,BLTCON0(a2)        4 pixels,use A & D,LF=copy
  139.     move.w    #$0002,BLTCON1(a2)        Descending mode
  140.     move.l    d0,BLTAPTH(a2)            Store scroll start
  141.     move.l    d0,BLTDPTH(a2)
  142.     move.w    #0,BLTAMOD(a2)            No modulo
  143.     move.w    #0,BLTDMOD(a2)
  144.     move.w    #$ffff,BLTAFWM(a2)        All the bits on the left
  145.     move.w    #$fff0,BLTALWM(a2)        Mask 1st 4 bits on right
  146.     bsr.s    WaitBlit            Patience!
  147.     move.w    #$c16,BLTSIZE(a2)        Do blit
  148.     rts
  149. WaitBlit:                    ; Wait for blitter to finish
  150.     btst.b    #6,DMACONR+CUSTOM
  151. .loop
  152.     btst.b    #6,DMACONR+CUSTOM
  153.     bne    .loop
  154.     rts
  155.     
  156. PlotChar
  157.     moveq    #0,d1
  158. CLoop    move.l    ScreenMem,a1
  159.     move.w    #PLANESIZE,d2
  160.     mulu    d1,d2
  161.     addi.l    #(105*44+40),d2            Calculate start address
  162.     add.l    d2,a1
  163.     moveq    #31,d0                32 lines
  164. Plot    move.l    (a0)+,(a1)            Copy data
  165.     lea    44(a1),a1
  166.     dbf    d0,Plot
  167.     addq    #1,d1                Next plane
  168.     cmpi    #3,d1                All done?
  169.     bne.s    CLoop
  170.     rts
  171. ScreenMem
  172.     dc.l    0
  173. GfxName:    
  174.     dc.b    "graphics.library",0
  175.     even
  176. GfxBase:
  177.     dc.l    0
  178. CopperSave:
  179.     dc.l    0
  180. CopperList:
  181. BPL1    dc.w    BPL1PTH,$0000
  182.     dc.w    BPL1PTL,$0000
  183. BPL2    dc.w    BPL2PTH,$0000
  184.     dc.w    BPL2PTL,$0000
  185. BPL3    dc.w    BPL3PTH,$0000
  186.     dc.w    BPL3PTL,$0000
  187.     dc.w    BPLCON0,$3200
  188.     dc.w    BPLCON1,$0000
  189.     dc.w    BPL1MOD,$0004
  190.     dc.w    BPL2MOD,$0004
  191.     dc.w    DDFSTRT,$0038
  192.     dc.w    DDFSTOP,$00D0
  193.     dc.w    DIWSTRT,$2C81
  194.     dc.w    DIWSTOP,$F4C1
  195.     dc.w    COLOR00
  196. c00    dc.w    0
  197.     dc.w    COLOR01
  198. c01    dc.w    0
  199.     dc.w    COLOR02
  200. c02    dc.w    0
  201.     dc.w    COLOR03
  202. c03    dc.w    0
  203.     dc.w    COLOR04
  204. c04    dc.w    0
  205.     dc.w    COLOR05
  206. c05    dc.w    0
  207.     dc.w    COLOR06
  208. c06    dc.w    0
  209.     dc.w    COLOR07
  210. c07    dc.w    0
  211.     dc.w    $ffff,$fffe        ; End of copper list
  212.  
  213. Letter    dc.l    Message
  214. Count    dc.w     0
  215. Message    dc.b    "!$%&*()-+=\/.,><;:@#0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",0
  216.     even
  217. Font:                
  218. ;                     v-------Put your own module name in here 
  219.     incbin "df1:myfont.mod"
  220.